import { createRouter, createWebHistory } from 'vue-router'
// 导入路由配置数组
import { routes } from './routes'
import { useUserStore } from '@/stores'

// 1. 创建路由实例
/**
 * vue2: new Router({ mode:'history | hash', routes:[] })
 * vue3:  createRouter({
 *        history: 设置路由的模式,
 *        routes:[配置路由规则]
 *  })
 */
const router = createRouter({
  // 1. history模式路由
  history: createWebHistory(import.meta.env.BASE_URL),
  // 2. hash模式路由=》路径带#)(兼容性好)
  /**
   * 说明：项目部署=》项目开发完了，打包=》dist目录
   * root 指服务器根目录
   * 1. 把dist代码放到服务器根目录（root）=> import.meta.env.BASE_URL 不需要设置
   * 2. 没有把dist代码放到服务器根目录（root）=》例如：放到root/consult-h5 => vite.config.ts  添加配置=>base: /consult-h5/
   */
  // history: createWebHashHistory(import.meta.env.BASE_URL),
  routes
})
// console.log('环境变量：', import.meta.env)

// 添加前置路由守卫 =》页面的访问控制
/**
 * vue2回调函数: to 去哪 from 从哪来 next 函数（放行）
 * vue3回调函数: to 去哪 from 从哪来
 * 说明：return true 放行 ｜ false 不放行
 * return path地址 可以跳一个页面
 */

router.beforeEach((to, from) => {
  // console.log('参数：', to, from)
  // 设置当前访问页面的title
  document.title = `问诊-${to.meta.title}`
  /**
   * 页面的访问控制
   * 核心：判断没有token同时不是白名单vip页面（login、reg、404页面等），就跳回登录页
   * 放行不需要写代码
   */
  const store = useUserStore()
  const vips = ['/login', '/reg'] // 白名单页面
  // 说明：没有token,也不是vip，就跳回登录页
  if (!store.user.token && !vips.includes(to.path)) return '/login'
})

// 2. 导出实例
export default router
